const EventEmitter = require('events').EventEmitter;

// 定义Dog构造函数，继承EventEmitter
function Dog(name, energy) {
  // 调用父类EventEmitter的构造函数，确保事件相关功能正常
  EventEmitter.call(this);
  
  // 初始化狗的名称和能量属性
  this.name = name;
  this.energy = energy;
  
  // 定义吠叫事件的处理逻辑：输出吠叫信息并减少能量
  this.on('bark', () => {
    if (this.energy > 0) {
      console.log(`${this.name} barked! energy: ${this.energy}`);
      this.energy--;
    }
  });
  
  // 每隔1秒触发一次'bark'事件，实现定时吠叫
  this.interval = setInterval(() => {
    // 当能量为0时，清除定时器，停止吠叫
    if (this.energy <= 0) {
      clearInterval(this.interval);
      return;
    }
    this.emit('bark'); // 触发吠叫事件
  }, 1000);
}

// 让Dog原型继承EventEmitter原型，实现完整的事件功能继承
Dog.prototype = Object.create(EventEmitter.prototype);
// 修复构造函数指向，确保instanceof判断正确
Dog.prototype.constructor = Dog;

// 导出Dog构造函数，供其他文件使用
module.exports = Dog;